package com.viewpager2.teach;

import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import java.util.List;

/**
 * Creator:Yx
 * Time:2020/8/5 10:50
 * Description:ViewPager2中的Fragment
 */
public class TextFragment extends Fragment {
    //通过Adapter适配器循环添加的Fragment,在滑动分页时除了基本变量和自身View以外，其他组件会被其他分页复用
    //也就是在本页面，看起来像是控件被销毁。如第三页滑回到第二页，上下拉刷新控件就被销毁了一样，数据回来了关不掉刷新
    //因此改变如下：变量和View 提出来，其他控件需要在onResume()每次都重新初始化，这次初始化表示把控件使用权拉回本页面
    public static TextFragment getInstance(String type) {
        TextFragment mFragment = new TextFragment();
        Bundle bundle = new Bundle();
        bundle.putString("type", type);
        mFragment.setArguments(bundle);
        return mFragment;
    }

    //变量和View
    private View rootView;
    private String type;
    private boolean isFirstVisible = true;
    private List<String> mLists;//动态加载的服务器数据
    //其他控件
    private TextView myTextView;
    private RelativeLayout relativeLayout;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //这里初始本View和变量，可以永久属于本页；其他控件一滑页就被其他页面复用了，赋予了新的属性；
        //所以比如第三页滑回第二页时，这些控件需要重新初始，将它拉回到第二页。
        //当分页过多时，滑到多页以后，本页会被销毁。整个Fragment都没了，所以当从多页滑回该页时，一切重0开始
        //则变量和控件都重新创建，所以mLists为空，isFirstVisible为true就会重新请求服务器新数据。OK
        rootView = inflater.inflate(R.layout.fragment_text, container, false);
        Bundle bundle = getArguments();
        if (bundle != null) {
            type = bundle.getString("type");
        }
        initView(rootView);
        return rootView;
    }


    @Override
    public void onResume() {//新版，每个页面可见时都会调用此方法了
        super.onResume();
        Log.i("aaaa", "可见：" + type);
        //presenter.setTypeViewer(this);//每一次可见时将监听拉回来（因为Presenter单例中，回调Viewer每次都会被不同界面注册）
        //如果拉回监听还发现其他问题，就在可见时，统一重置View,调用initView(rootView);
        if (isFirstVisible) {
            //仅第一次进入才执行数据请求
            initData();
            isFirstVisible = false;
        }
    }

    private void initView(View rootView) {
        myTextView = rootView.findViewById(R.id.tvTitle);
        relativeLayout = rootView.findViewById(R.id.container);
        myTextView.setText(type);
        relativeLayout.setBackgroundResource(android.R.color.holo_blue_dark);
    }

    private void initData() {

    }


    /*
    @Override
    public void onSecondLevelTypeData(List<SecondLevelListModelBean> mList) {//接口返回的集合数据
        refreshLayout.finishRefresh();
        refreshLayout.finishLoadMore();
        if (mList != null && mList.size() > 0) {
            if (pageIndex == 0) {
                mLists = mList;
            } else {
                mLists.addAll(mList);
            }
            adapter.setData(mLists);
            pageIndex++;
        }
    }
     */


}
